%-------------------------------------------------------------------------------

% This file is part of code_saturne, a general-purpose CFD tool.
%
% Copyright (C) 1998-2025 EDF S.A.
%
% This program is free software; you can redistribute it and/or modify it under
% the terms of the GNU General Public License as published by the Free Software
% Foundation; either version 2 of the License, or (at your option) any later
% version.
%
% This program is distributed in the hope that it will be useful, but WITHOUT
% ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
% FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
% details.
%
% You should have received a copy of the GNU General Public License along with
% this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
% Street, Fifth Floor, Boston, MA 02110-1301, USA.

%-------------------------------------------------------------------------------

\programme{cs\_face\_viscosity}
%

\hypertarget{cs\_face\_viscosity}{}

\vspace{1cm}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section*{Fonction}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Dans ce sous-programme est calculé le coefficient de diffusion isotrope aux
faces. Ce coefficient fait intervenir la valeur de la viscosité aux faces
multipliée par le rapport surface de la face sur la distance algébrique
$\overline{I'J'}$ ou $\overline{I'F}$({\it cf.} figure
\ref{Base_Viscfa_fig_geom}), rapport résultant de l'intégration du terme de
diffusion.  Par analogie du terme calculé, ce sous-programme est aussi appelé
par le sous-programme \fort{resopv} pour calculer le coefficient ``diffusif''
de la pression faisant intervenir le pas de temps.\\
La valeur de la viscosité aux faces est déterminée soit par une moyenne
arithmétique, soit par une moyenne harmonique de la viscosité au centre des
cellules, suivant le choix de l'utilisateur. Par défaut, cette valeur est
calculée par une moyenne arithmétique.

See the \doxygenanchor{cs__face__viscosity_8c.html\#cs\_face\_viscosity}{programmers reference of the dedicated subroutine}
for further details.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section*{Discrétisation} \label{Base_Viscfa_paragraphe2}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
On rappelle dans la figure \ref{Base_Viscfa_fig_geom}, la définition des différents
points géométriques utilisés par la suite.

\begin{figure}[h]
\parbox{8cm}{%
\centerline{\includegraphics[height=4.5cm]{facette}}}
\parbox{8cm}{%
\centerline{\includegraphics[height=4.5cm]{facebord}}}
\caption{\label{Base_Viscfa_fig_geom}Définition des différentes entités
géométriques pour les faces internes (gauche) et de bord (droite).}
\end{figure}

L'intégration du terme de diffusion sur une cellule $\Omega_i$ est la suivante~:
\begin{equation}
\int_{\Omega_i}\dive (\mu\,\grad(f))\,d\Omega= \sum\limits_{j \in
Vois(i)}\mu_{\,ij} \frac{f_{J'}-f_{I'}}{\overline{I'J'}}\,.\, S_{\,ij} + \sum\limits_{k \in
\gamma_b(i)}\mu_{\,b_{ik}} \frac{f_{\,b_{ik}}- f_{I'}}{\overline{I'F}}\,.\,S_{\,b_{ik}}
\end{equation}
Dans ce sous-programme, on calcule les termes de diffusion
$\displaystyle \mu_{\,ij}\frac{S_{\,ij}}{\overline{I'J'}}$ et $\displaystyle
\mu_{\,b_{ik}}\,.\,\frac{S_{\,b_{ik}}}{\overline{I'F}}$.\\

La valeur de la viscosité sur la face interne $ij$, $\mu_{\,ij}$, est calculée~:\\
\hspace*{1.cm} {\tiny$\bigstar$}  soit par moyenne arithmétique~:
\begin{equation}
\mu_{\,ij}=\alpha_{\,ij}\mu_{\,i}+(1-\alpha_{\,ij})\mu_{\,j}
\end{equation}
avec $\alpha_{\,ij} = 0.5$ car ce choix semble stabiliser, bien que cette
interpolation soit d'ordre 1 en espace en convergence.\\
\hspace*{1.cm} {\tiny$\bigstar$} soit par moyenne harmonique~:
\begin{equation}\notag
\mu_{\,ij}=\frac{\mu_{\,i}\ \mu_{\,j}}{\alpha_{\,ij}\mu_{\,i}+(1-\alpha_{\,ij})\mu_{\,j}}
\end{equation}
avec $\alpha_{\,ij}=\displaystyle \frac{\overline{FJ'}}{\overline{I'J'}}$.\\

La valeur de la viscosité sur la face de bord $ik$, $\mu_{\,b_{ik}}$, est définie
ainsi~:\\
\begin{equation}\notag
\mu_{\,b_{ik}}=\mu_I.
\end{equation}
\minititre{Remarque}
Lors de l'appel de \fort{cs\_face\_viscosity} par le sous-programme \fort{resopv}, le terme
à considérer est~:
\begin{equation}\notag
\dive (\,\Delta t^n \ \grad(\delta p)\,)
\end{equation}
soit~:
\begin{equation}\notag
\mu = \mu^n = \Delta t
\end{equation}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section*{Mise en \oe uvre}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
La valeur de la viscosité au centre des cellules est entrée en argument {\it
  via} la variable \var{VISTOT}. On calcule sa valeur moyenne aux faces et on
la multiplie par le rapport surface \var{SURFN} sur la distance algébrique
\var{DIST} pour une face interne (\var{SURFBN} et \var{DISTBR} respectivement
pour une face de bord). La valeur du terme de diffusion résultant est mise dans
le vecteur \var{VISCF} pour une face interne et \var{VISCB} pour une face de
bord.  La variable \var{IMVISF} détermine quel type de moyenne est utilisé pour
calculer la viscosité aux faces.\\
Si \var{IMVISF}$=0$, la moyenne est arithmétique, sinon la moyenne est harmonique.\\

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section*{Points à traiter}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
L'obtention des interpolations utilisées dans \CS et synthétisées dans
l'annexe~\ref{Base_Viscfa_paragraphe2} est détaillée dans le rapport de Davroux
et \textit{al.}\footnote{%
  Davroux A., Archambeau F. et Hérard J.M., Tests numériques sur quelques
  méthodes de résolution d'une équation de diffusion en volumes finis,
  HI-83/00/027/A.}.
%
Les auteurs de ce rapport ont montré que, pour des solutions régulières et sur
un maillage monodimensionnel irrégulier avec une viscosité non constante, la
convergence mesurée est d'ordre 2 en espace avec l'interpolation harmonique et
d'ordre 1 en espace avec l'interpolation linéaire.

Par conséquent, il serait préférable d'utiliser l'interpolation harmonique pour
calculer la valeur de la viscosité aux faces. Des tests de stabilité seront
nécessaires au préalable.
\\
De même, on envisage d'extrapoler la viscosité sur les faces de bord plutôt que
de prendre la valeur de la viscosité au centre de la cellule jouxtant cette face.\\
Dans le cas de la moyenne arithmétique, l'utilisation de la valeur $0.5$ pour
les coefficients $\alpha_{\,ij}$ serait à revoir.
